package br.com.javajsf.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import br.com.javajsf.connection.ConnectionFactory;
import br.com.javajsf.modelo.Pagamento;


public class PagamentoDao {
	
	//Connection con = ConnectionFactory.getConnection();
	
	
	public void gravar(Pagamento pagamento){
		String sql = "INSERT INTO PAGAMENTO (COD_CLIENTE,DATA_PAGAMENTO,VALOR)" + " VALUES (?,?,?)";
		
		System.out.println(pagamento.getCliente().getCod());
		System.out.println(pagamento.getDataPag());
		System.out.println(pagamento.getValor());
		
		Date data = new Date(pagamento.getDataPag().getTime());
		
		PreparedStatement pstm = null;

		try(Connection con = ConnectionFactory.getConnection()) {
			pstm = con.prepareStatement(sql);
			pstm.setInt(1, pagamento.getCliente().getCod());
			pstm.setDate(2, pagamento.getDataPag());
			pstm.setDouble(3, pagamento.getValor());
			pstm.execute();
		} catch (SQLException e) {
			System.out.println("Deu erro aqui no banco");
			e.printStackTrace();
		} finally{
			try {
				pstm.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	public Object buscarCod(int cod) {
		String sql = "SELECT * FROM PAGAMENTO WHERE COD = ?";
		Pagamento pagamento = new Pagamento();
		PreparedStatement pstm = null;
		
		try(Connection con = ConnectionFactory.getConnection()) {
			pstm = con.prepareStatement(sql);
			pstm.setInt(1, cod);
			ResultSet rs = pstm.executeQuery();
			if (rs.next()) {
				pagamento.setCod(rs.getInt(1));
				pagamento.getCliente().setCod(rs.getInt(2));
				pagamento.setDataPag(rs.getDate(3));
				pagamento.setValor(rs.getDouble(4));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {
				pstm.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return pagamento;
	}
	
	public List<Pagamento> listarTodos() {
		String sql = "SELECT * FROM PAGAMENTO";
		List<Pagamento> listaPag = new ArrayList<Pagamento>();
		PreparedStatement pstm = null;

		try(Connection con = ConnectionFactory.getConnection()) {
			pstm = con.prepareStatement(sql);
			ResultSet rs = pstm.executeQuery();
			while (rs.next()) {
				Pagamento pag = new Pagamento();
				pag.setCod(rs.getInt(1));
				pag.getCliente().setCod(rs.getInt(2));
				pag.setDataPag(rs.getDate(3));
				pag.setValor(rs.getDouble(4));
				listaPag.add(pag);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {
				pstm.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return listaPag;
	}
	
	public List<Pagamento> listarPagtsCliente(int codCliente) {
		String sql = "SELECT * FROM PAGAMENTO WHERE COD_CLIENTE = ? ORDER BY DATA_PAGAMENTO ASC";
		List<Pagamento> listaPag = new ArrayList<Pagamento>();
		PreparedStatement pstm = null;
		
		try(Connection con = ConnectionFactory.getConnection()) {
			pstm = con.prepareStatement(sql);
			pstm.setInt(1, codCliente);
			ResultSet rs = pstm.executeQuery();
			while (rs.next()) {
				Pagamento pag = new Pagamento();
				pag.setCod(rs.getInt(1));
				pag.getCliente().setCod(rs.getInt(2));
				pag.setDataPag(rs.getDate(3));
				pag.setValor(rs.getDouble(4));
				listaPag.add(pag);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {
				pstm.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return listaPag;
	}
}
